package szxy.base.day05;
/*
     数组元素逆序（就是把元素对调）

     思路：涉及数组元素交换的时候，可以定义一个中间变量，作用就是临时将值存储一下
 */
public class demo13ArrayTest3 {
    public static void main(String[] args) {

        int[] arr={1,2,3,4,5,6,7,8,9};
        System.out.println("逆序前：");
        printIntArray(arr);

//        //第一个元素和最后一个元素交换
//        int tmp1=arr[0];
//        arr[0]=arr[arr.length-1-0];
//        arr[arr.length-1]=tmp1;
//
//        //第二个元素和倒数第二个元素交换
//        int tmp2=arr[1];
//        arr[1]=arr[arr.length-1-1];
//        arr[arr.length-2]=tmp2;
//
//        //第三个元素和倒数第三个元素交换
//        int tmp3=arr[2];
//        arr[2]=arr[arr.length-1-2];
//        arr[arr.length-3]=tmp3;
//
//        //第四个元素和倒数第四个元素交换
//        int tmp4=arr[3];
//        arr[3]=arr[arr.length-1-3];
//        arr[arr.length-4]=tmp4;
//
//        //小结论：交换的次数=数组的长度/2
//        //使用for循环改进
//        for(int i=0;i<arr.length/2;i++){
//            int tmp=arr[i];
//            arr[i]=arr[arr.length-1-i];
//            arr[arr.length-1-i]=tmp;
//        }

        int[] resArr1=niXu1(arr);
        System.out.println("逆序后：");
        printIntArray(resArr1);



        int[] resArr2=niXu2(arr);
        System.out.println("逆序后：");
        printIntArray(resArr2);



    }
    //将逆序2的功能封装成一个方法：定义指针的格式
    public static int[] niXu2(int[] arr) {
        for(int start=0,end=arr.length-1;start<end;start++,end--){
            int temp=arr[start];
            arr[start]=arr[end];
            arr[end]=temp;
        }
        return arr;
    }


    //将逆序1的功能封装成一个方法
    public static int[] niXu1(int[] arr) {
        for(int i=0;i<arr.length/2;i++){
            int tmp=arr[i];
            arr[i]=arr[arr.length-1-i];
            arr[arr.length-1-i]=tmp;
        }
        return arr;
    }



    //将输出的int类型的数组功能封装成一个方法
    public static void printIntArray(int[] array) {
        for (int i = 0; i < array.length; i++) {
            if(i==0){
                System.out.print("["+array[i]+",");
            }else if(i==array.length-1){
                System.out.print(array[i]+"]");
            }else{
                System.out.print(array[i]+",");
            }
        }
        //换行
        System.out.println();
    }
}
